import java.util.Scanner;
public class sistema_loja {
    static int op, r;          
    static int[]  matri ;
    static int[] quant ;
    static int[] cod ;             
    static int[] qtd ;       
    public static String[] funcao(String[] teste){
    	String[] aux = new String[teste.length+1];
    	for(int x=0;x<teste.length;x++){
    		aux[x] = teste[x];
    	}
    	return aux;    	
    }
    public static int[] funcaoint(int[] teste){
    	int[] aux = new int[teste.length+1];
    	for(int x=0;x<teste.length;x++){
    		aux[x] = teste[x];
    	}
    	return aux;    	
    }
    public static Double[] funcaodo(Double[] teste){
    	Double[] aux = new Double[teste.length+1];
    	for(int x=0;x<teste.length;x++){
    		aux[x] = teste[x];
    	}
    	return aux;    	
    }
    static Double[] vl ;
    static String[] nome ;
    static String[] fun  ;
    static String[] end ;
    static String[] tel ;
    static String[] prd ;
    static String[] mar ;
    static String[] eend ;
    static String[] emp ;
    static String[] cnpj ;
    static String[] etel ;
    
    static void home(int op) {
        System.out.println("|--------MENU----------|");
        System.out.println("|1 - Funcionários      |");
        System.out.println("|2 - Produtos          |");
        System.out.println("|3 - Fornecedores      |");
        System.out.println("|4 - Vendas            |");
        System.out.println("|5 - Sair              |");       
        op = (new Scanner(System.in)).nextInt();    
            
                switch (op) {
	case 1:
		sub_fun(op);
		break;
	case 2:
		sub_prd(op);
		break;
	case 3:
		sub_forn(op);
		break;
	case 4:
		sub_ved(op);
		break;
        case 5:
                System.exit(0);
                break;
        default:
                System.out.println("Opção Inválida!");
                home(op);
                break;
                }
   
        /*limpatela*/
    }
    static void sub_fun(int op){
        System.out.println("|-------FUNCIONÁRIOS---------|");
        System.out.println("|1 - Cadastros               |");
        System.out.println("|2 - Busca de Funcionários   |");
        System.out.println("|3 - Relatorio               |");
        System.out.println("|0 - Voltar                  |");
        op = (new Scanner(System.in)).nextInt();
         switch (op) {
	case 1:       
            cfun(op);
            break;           
        
        case 2:
            bfun(op);
            break;        
            
        case 3:    
            System.out.println("-------RELAÇÃO DE FUNCIONARIOS--------");
            for (int y = 0; y <= nome.length; y++) {
                System.out.println("|"+nome[y] + " -- " + matri[y] + " -- " + fun[y]+"|");
            }
            System.out.println(" ");
            sub_fun(op);
            break;
        case 0:
            System.out.println(" ");
            home(op);
            break;
        default:
                System.out.println("Opção Inválida!");
                System.out.println(" ");
                sub_fun(op);
                break;
                } 
    }
    static void sub_prd(int op) {
        System.out.println("----------PRODUTOS---------");
        System.out.println("|1 - Cadastros de Produtos|");
        System.out.println("|2 - Busca do Produtos    |");
        System.out.println("|3 - Estoque              |");
        System.out.println("|4 - Relatorios de Estoque|");
        System.out.println("|0 - Voltar               |");
        
        op = (new Scanner(System.in)).nextInt();
        switch(op){
            case 0:
                home(op);
                break;
              
            case 1:
                cprd(op);
                break;
            
            case 2:
                bprd(op);
                break;
                        
            case 3:                            
                System.out.println("--------PRODUTOS NO ESTOQUE-------");
                for (int x = 1; x <= prd.length; x++) {
                    System.out.println(cod[x] + " - " + prd[x] + " -- " + mar[x] + " ----- " + quant[x]);
                }
                sub_prd(op);
                break;
            case 4:
                /*Relatorios de estoque*/
                break;
            default:
                System.out.println("Opção Inválida!");
                sub_prd(op);
                break;
            }
        }            
    static void sub_forn(int op) {
        System.out.println("--------FORNECEDORES-------");
        System.out.println("|1 - Cadastros            |");
        System.out.println("|2 - Busca de Fornecedores|");
        System.out.println("|3 - Relatorio            |");
        System.out.println("|0 - Voltar               |");
        
        op = (new Scanner(System.in)).nextInt();
        switch (op){
            case 1:
                cforn(op);
                break;
            case 2:
                bforn(op);
                break;
            case 3:
                System.out.println("--------RELAÇÃO DE FORNECEDORES-------");
                for (int x = 1; x <= emp.length; x++) {
                    System.out.println(emp[x] + "--" + cnpj[x] + "--" + eend[x] + "--" + etel[x]);
                }
                System.out.println(" ");
                sub_forn(op);
                break;
            case 0:
                home(op);
                break;
            default:
                System.out.println("Opção Inválida!");
                sub_forn(op);
                break;
        }        
    }
    static void sub_ved(int op){
        System.out.println("---------VENDAS---------");
        System.out.println("|1 - Tela de vendas    |");
        System.out.println("|2 - Consulta de vendas|");
        System.out.println("|3 - Relatorio         |");
        System.out.println("|0 - Voltar            |");
        op = (new Scanner(System.in)).nextInt();
        switch(op){
            case 0:
                home(op);
                break;
                
            case 1:
                tv(op);
                break;
                
            case 2:
                break;
                
            case 3:
                break;
                
            default:                
                System.out.println("Opção Inválida!");
                System.out.println(" ");
                sub_ved(op);
                break;
        }
        
        /*limpatela*/
    }
    static void tv(int op){
        int cal = 0, y = 1;
            System.out.println("        CAIXA 1");
            do {
                System.out.println("Digite codigo do produto:");
                cod[y] = (new Scanner(System.in)).nextInt();
                System.out.println("Informe a quantidade do produto:");
                for (int x = 0; x <= 10; x++) {
                    if (cod[y] == cod[x]) {
                        System.out.println(cod[x] + " - " + prd[x] + " -- " + qtd[x] + " ----- " + "R$" + (qtd[x] * vl[x]));
                        cal = (int) (cal + (qtd[x] * vl[x]));
                        quant[x] = quant[x] - qtd[x];
                    }
                }            
                System.out.println("1 - Continuar");
                System.out.println("2 - Finalizar");
                op = (new Scanner(System.in)).nextInt();
            } while (op == 2);
            Double pg;
            System.out.println("VALOR TOTAL R$:" + cal);
            System.out.print(" PAGAMENTO R$:");
            pg = (new Scanner(System.in)).nextDouble();
            System.out.println("TROCO R$:" + (pg - cal));
            sub_ved(op);
        
        if(op==3){
            for(int x=1;x<=10;x++){
                System.out.println(cod[x] + " - " + prd[x] + " -- " + qtd[x] + " ----- " + "R$" + (qtd[x] * vl[x]));
            }
        }
}
    static void cfun(int op) {
        matri = new int[0]; 
        nome = new String[0];
        tel = new String[0];
        end = new String[0];
        fun = new String[0];
        do {                                     
            System.out.println("        CADASTRO DE FUNCIONÁRIOS");
            System.out.println("Informe o primeiro nome:");                       
            String dadofun = (new Scanner(System.in)).nextLine();
            nome = funcao(nome);
            nome[nome.length - 1] = dadofun;            
            System.out.println("Informe a matricula:");
            int mat = (new Scanner(System.in)).nextInt();
            matri = funcaoint(matri);
            matri[matri.length - 1] = mat;
            System.out.println("Informe a função:");
            dadofun = (new Scanner(System.in)).nextLine();
            fun = funcao(fun);
            fun[fun.length - 1] = dadofun;
            System.out.println("Informe o endereço:");
            dadofun = (new Scanner(System.in)).nextLine();
            end = funcao(end);
            end[end.length - 1] = dadofun;
            System.out.println("Informe o telefone:");
            dadofun = (new Scanner(System.in)).nextLine();
            tel = funcao(tel);
            tel[tel.length - 1] = dadofun;
            System.out.println("Deseja cadastrar mais um funcionario ?");
            System.out.println("1 - Sim");
            System.out.println("2 - Não");
            r = (new Scanner(System.in)).nextInt();
        } while (r != 2);
        sub_fun(op);
    }
    static void cprd(int op) {        
        mar = new String[0];
        prd = new String[0];        
        vl = new Double[0];
        qtd= new int[0];
        cod = new int[0];
        quant = new int[0];      
        do {
            System.out.println("        CADASTROS DE PRODUTOS");
            System.out.println("Informe o nome do produto:");
            String dadoprd = (new Scanner(System.in)).nextLine();
            prd = funcao(prd);
            prd[prd.length - 1] = dadoprd;
            System.out.println("Infome a marca do produto:");
            dadoprd = (new Scanner(System.in)).nextLine();
            mar = funcao(mar);
            mar[mar.length - 1] = dadoprd;
            System.out.println("Informe o código do produto:");
            int dado = (new Scanner(System.in)).nextInt();
            cod = funcaoint(cod);
            cod[cod.length - 1] = dado;            
            System.out.println("Informe o preço unitario R$: ");
            Double dadov = (new Scanner(System.in)).nextDouble();
            vl = funcaodo(vl);
            vl[vl.length - 1] = dadov;
            System.out.println("Informe quantidade do produto:");
            dado = (new Scanner(System.in)).nextInt();
            quant = funcaoint(quant);
            quant[quant.length - 1] = dado;
            System.out.println("Deseja cadastrar mais um produto?");
            System.out.println("1 - Sim");
            System.out.println("2 - Não");
            r = (new Scanner(System.in)).nextInt();                        
        } while (r != 2);
        System.out.println(" ");
        sub_prd(op);
    }
    static void cforn(int op) {
        cnpj = new String[0];
        etel = new String[0];
        emp = new String[0];
        eend = new String[0];
        do {
            
            System.out.println("        CADASTRO DE FORNECEDORES");
            System.out.println("Informe o nome da empresa:");
            String dado = (new Scanner(System.in)).nextLine();
            emp = funcao(emp);
            emp[emp.length - 1] = dado;
            System.out.println("Informe o CNPJ:");
            dado = (new Scanner(System.in)).nextLine();
            cnpj = funcao(cnpj);
            cnpj[cnpj.length - 1] = dado;
            System.out.println("Informe o endereço da empresa:");
            dado = (new Scanner(System.in)).nextLine();
            eend = funcao(eend);
            eend[eend.length - 1] = dado;
            System.out.println("Informe o telefone da empresa:");
            dado = (new Scanner(System.in)).nextLine();
            etel = funcao(etel);
            etel[etel.length - 1] = dado;
            System.out.println("Deseja cadastrar mais um funcionario?");
            System.out.println("1 - Sim");
            System.out.println("2 - Não");
            r = (new Scanner(System.in)).nextInt();            
        } while (r == 2);
        sub_forn(op);
    }
    static void bfun(int op) {
        int found = 0;
        String n1;        
        System.out.println("        BUSCA DE FUNCIONÁRIOS");
        System.out.println("1 - Busca por nome:");
        System.out.println("0 - Voltar");
        op = (new Scanner(System.in)).nextInt();        
        switch(op){
            case 1:
                System.out.println("Digite o nome");
                n1 = (new Scanner(System.in)).nextLine();            
                for (int x = 0; x < nome.length; x++) {
                    if (n1.equalsIgnoreCase(nome[x])) {
                        found++;
                        System.out.println("Funcionário(s): ");
                        System.out.println(nome[x] + " -- " + matri[x] + " -- " + fun[x] + " -- " + tel[x] + " -- " + end[x]);
                        
                    }                    
                }                
                if (found == 0) {
                    System.out.println("Funcionário não encontrado");
                }
                System.out.println(" ");
                bfun(op);
                break;
            case 0:
                System.out.println(" ");
                sub_fun(op);
                break;
                
            default:                
                System.out.println("Opção Inválida!");
                System.out.println(" ");
                bfun(op);
                break;
        }                                
    }
    static void bp(int op) {
        int found = 0;
        String prd1;
        do {
            System.out.println("        BUSCA POR PRODUTO");
            System.out.println("Digite o nome do produto:");
            prd1 = (new Scanner(System.in)).nextLine();
            /*limpe*/
            for (int x = 0; x <= prd.length; x++) {
                if (prd[x].equalsIgnoreCase(prd1)) {
                    found++;
                    System.out.println("Produto:");
                    System.out.println(cod[x] + " - " + prd[x] + " -- " + mar[x] + " -- " + "R$" + vl[x] + " ----- " + quant[x]);
                }
            }
            if (found == 0) {
                System.out.println("Produto não encontrado");
            }
        } while (found == 0);
        System.out.println(" ");
        bprd(op);
    }
    static void bm(int op) {
        int found = 0;
        String mar1;
        do {

            System.out.println("        BUSCA POR MARCA");
            System.out.println("Digite a marca do procuto:");
            mar1 = (new Scanner(System.in)).nextLine();            
            for (int x = 1; x <= mar.length; x++) {
                if (mar[x].equalsIgnoreCase(mar1)) {
                    found++;
                    System.out.println("Produto:");
                    System.out.println(cod[x] + " - " + prd[x] + " -- " + mar[x] + " -- " + "R$ " + vl[x] + "-----" + quant[x]);
                }
            }
            if (found == 0) {
                System.out.println("Produto não encontrado");
            }
        } while (found == 0);
        System.out.println(" ");
        bprd(op);
    }
    static void bforn(int op) {
        int found = 0;
        do {
            System.out.println("        BUSCA DE FORNECEDORES");
            System.out.println("1 - Busca por nome da empresa");
            System.out.println("0 - Voltar");
            op = (new Scanner(System.in)).nextInt();
            switch(op){
                case 1:
                    String emp1;
                    System.out.println("Digite o nome da empresa:");
                    emp1 = (new Scanner(System.in)).nextLine();                    
                    for (int x = 0; x <= emp.length; x++) {
                        if (emp1.equalsIgnoreCase(emp[x])) {
                            found++;
                            System.out.println(emp[x] + " -- " + cnpj[x] + " -- " + eend[x] + " -- " + etel[x]);
                        }
                    }
                    System.out.println(" ");
                    bforn(op);
                    break;
                    
                default:                
                    System.out.println("Opção Inválida!");
                    System.out.println(" ");
                    bforn(op);
                    break;    
            }
            
            if (found == 0) {
                System.out.println("Fornecedor não encontrado");
            }
        } while (found == 0);
    }
    static void bprd(int op){
                System.out.println("        BUSCAR DE PRODUTOS");
                System.out.println("1 - Busca por produto");
                System.out.println("2 - Busca por marca");
                System.out.println("0 - Voltar");
                op = (new Scanner(System.in)).nextInt();
                switch(op){
                    case 0:
                        System.out.println(" ");
                        sub_prd(op);                        
                        break;
                    case 1:
                        System.out.println(" ");
                        bp(op);                        
                        break;
                    case 2:
                        System.out.println(" ");
                        bm(op);
                        break;
                    default:
                        System.out.println("Opção Inválida!");
                        System.out.println(" ");
                        bprd(op);                        
                        break;
                }
    }

    public static void main(String[] args) {
            home(op);            
    }
}